//////////////////////////////////////////////////
// STUDENT RESEARCH PROJECT						//
// UNIVERSITY OF HAGEN 2012						//
// File:	Statistic.h							//
// Date:	01.09.2012							//
// Author:	Max Pejs							//
//////////////////////////////////////////////////

#ifndef STATISTIC_H
#define STATISTIC_H

#include <stdio.h>

#include "macro.h"
#include "typedef.h"
#include "defines.h"
#include "EepromMemory.h"

#ifndef WIN32
#include "RS232Trace.h"
#include "Arduino.h"
#endif


class Statistic
{
private:
	static UInt16 corrFramesCNT;
	static UInt16 invalidFramesCNT;
	static bool IsActivated;
	static unsigned long lastTimerStoreStat;

	static void sendStatisticAreDeactivated(void);
public:

	//////////////////////////////////////////////////////////
	//	Reset statistic counters for correct and			//
	//	invalid frames										//
	//////////////////////////////////////////////////////////
	static void ResetStatistics(void);
	
	//////////////////////////////////////////////////////////
	//			Stores statistic values	to EEPROM			//
	//////////////////////////////////////////////////////////
	static void StoreStatistic(void);
	
	//////////////////////////////////////////////////////////
	//			Sends statistic data to RS232				//
	//////////////////////////////////////////////////////////
	static void SendStatistic(void);

	//////////////////////////////////////////////////////////
	//	Register received frame								//
	//														//
	//	param "valid":	Value indicating whether			//
	//					frame receiver sucessful			//
	//////////////////////////////////////////////////////////
	static void FrameReceived(bool valid);

	//////////////////////////////////////////////////////////
	//	Transimts statistics status (ON or OFF)				//
	//////////////////////////////////////////////////////////
	static void SendStatus(void);

	//////////////////////////////////////////////////////////
	//	Sets statistics to given	by param state			//
	//	(true = ON, false = OFF)							//
	//////////////////////////////////////////////////////////
	static void SetState(bool state);
};

extern Statistic STATISTIC;
#endif	//	STATISTIC_H
